Nodes in a CSMA network do not have a priority sequence for communicating with each other. Instead, any node may transmit at any time with the same priority as any other node in the network. Since nodes may attempt to transmit packets at the same time, the packets may interfere with each other, resulting in collisions. As nodes attempt a retransmission, after detecting a collision, system load in the network is typically increased.
Each node using CSMA protocol measures time from a last activity on a shared channel in equal time slots of a contention interval. A transmitting node in the network generates a random number, then counts a corresponding number of time slots until the random number is reached. At that point, the node may attempt to occupy the channel and other nodes may suspend their count until the channel is free again. If two nodes generate the same random number, by chance, and consequently collide, each then may generate a new random number and start counting time slots from zero in the next contention interval.
In a CSMA based network, nodes sense the channel before transmitting a data packet to another node. In a CSMA with collision detection (CSMA/CD) based network, nodes detect collision before transmitting, and stop transmitting if noise is sensed in the channel. In a CSMA with collision avoidance (CSMA/CA) based network, nodes listen to any activity and reserve a space in the channel to avoid collision.
To reduce the occurrence of collisions in networks, channel reservation may be deployed. Typically, reservation involves two-way communications between a transmitting node and a receiving node. When a data packet arrives from an upper layer (for example an Internet communications application), the transmitting node first reserves channel space for the transmission of the data packet. If the transmitting node detects that channel space is available, the node schedules transmission of a request-to-send (RTS) packet to a receiving node, after a generated random interval is reached. In doing so, the transmitting node informs the receiving node of the pending data packet and allows the receiving node to determine if the transmitting node may transmit the data packet over the available channel space. If the receiving node senses that channel space is available, a clear-to-send (CTS) packet is returned to the transmitting node and the channel space is reserved. After receiving the CTS packet, the transmitting node transmits the data packet over the reserved channel. By allowing the receiving node to determine whether the transmitting node may transmit the data packet, the probability of collision due to hidden nodes is reduced. In addition, collisions of multiple RTS packets, simultaneously transmitted over the channel by neighboring nodes, may also be reduced.
In general, the random delay, in number of time slots of a contention interval, is uniformly selected from a range of one time slot up to a maximum number of time slots in the contention interval, where the length of the contention interval is predetermined.
Because access rate of a node is fixed by the initial predetermined CI length, channel access rate (CAR) in the network cannot be adjusted, when more nodes than initially expected start to content for limited channel resources. In an IEEE 802.11 protocol standard, the CI length may be temporarily lengthened to lessen channel congestion at the expense of higher channel access rate. IEEE 802.11 protocol resets the CI length to its initial predetermined value, after a channel access attempt is successful. Knowledge of a prior successful channel access is not utilized in a subsequent channel access attempt. As a result, performance of the IEEE 802.11 protocol is limited.
What is needed is a system and method of controlling the CAR in a communications network by adaptively adjusting the length of the CI based on previous knowledge of traffic conditions or channel occupancy conditions in the network. This invention addresses this need.